package bd;

/*
 * Esse arquivo é parte do Software new Recicle
 * 
 * Copyright (C) 2011-$AnoCorrente$ Eduardo Moreira Barbosa
 * Copyright (C) 2011-$AnoCorrente$ João dos Santos Gonçalves
 * Copyright (C) 2011-$AnoCorrente$ Lucas Ximenes da Fonseca
 * 
 * new Recicle é um Software Livre: Você pode redistribuí-lo e/ou modificá-lo
 * de acordo com os termos da Licença Pública Geral GNU (GNU General Public License)
 * conforme publicada pela Free Software Foundation (FSF). Essa permissão é atribuída
 * na versão 3 da Licença, ou (na sua opinião) qualquer versão.
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa,
 * se não, escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 * 
 * Se você tiver alguma dúvida e/ou quiser dar suporte ao desenvolvimento, favor entrar em
 * contato nos e-mails <barbosa.edrd@gmail.com>, <john.jsg@hotmail.com>, <lxf.lucas@gmail.com>.
 */

import java.sql.SQLException;
import produto.Produto;

public class BancoProduto{  

    private String comando;    
    private String Id = "";
    
    /**
     * Cadastro de Produtos
     * 
     * @exception       Exceção SQL
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void cadastrar(){
        comando = "Insert into Ervilha.Produto (Tipo) Values ('" + Produto.getProduto().getTipo() + "')"; 
        try{            
            BancoDeDados.STATEMENT = BancoDeDados.CONNECTION.createStatement();
            
            try{                        
                BancoDeDados.STATEMENT.executeUpdate(comando);                                          
            } catch (SQLException sQLException){
                    sQLException.printStackTrace();
            }
        } catch (SQLException sQLException) {
            sQLException.printStackTrace();
        }
    }
    
    /**
     * Remoção de Produtos
     * 
     * @param comparar  Produto a ser excluido do Banco de dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void apagar(String comparar){
        try{
            comando = "Delete from Ervilha.Produto where Tipo = '" + comparar + "'";
            BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(comando);
            BancoDeDados.PREPAREDSTATEMENT.execute();
            BancoDeDados.PREPAREDSTATEMENT.close();
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }        
    }  
    
    /**
     * Pesquisar no Banco de Dados
     * 
     * @param comparar  Produto a ser pesquisado no Banco de Dados
     * @return          Produto se existir no Banco de Dados ou null se não existir
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarBanco(String comparar){
        String sql = "Select * from Ervilha.Produto";        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String pesquisaBanco = BancoDeDados.RESULTSET.getString("Tipo");
               if (pesquisaBanco.equals(comparar)){
                 return pesquisaBanco;
               }
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }
    
    /**
     * Pesquisar os Produtos
     * 
     * @return          null se não existir Produto no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarId(){
        String sql = "Select * from Ervilha.Produto";        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
           while (BancoDeDados.RESULTSET.next()){
               String nome = BancoDeDados.RESULTSET.getString("Tipo");             
               Id += nome + "#";
          }
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
        return null;
    }
    
    /**
     * Retornar o Produto
     * 
     * @see             Método pesquisarId
     * @return          Todos os Produtos
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String[] retornarId(){
        String[] ss = Id.split("#");
        return ss;
    }
    
    /**
     * Alterar Produto
     * 
     * @see             Classe Produto
     * @param produto   Novas características do Produto
     * @param pesquisa  Produto a ser modificado no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void alterar(Produto produto, String pesquisa){
        String sql = "Update Ervilha.Produto set Tipo = ? where Tipo = ?";
        
        try{
           BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
           BancoDeDados.PREPAREDSTATEMENT.setString(1, produto.getTipo());
           BancoDeDados.PREPAREDSTATEMENT.setString(2, pesquisa);
           BancoDeDados.PREPAREDSTATEMENT.execute();
           BancoDeDados.PREPAREDSTATEMENT.close();           
        } catch (SQLException sQLException){
            sQLException.printStackTrace();
        }
    }
    
}